maven 插件发布 docker 镜像

本文档介绍如何使用 Maven 插件构建 Docker 镜像并推送到阿里云容器镜像服务(ACR),适用于 PIGX 微服务架构的容器化部署。

推荐方案

阿里云 ACR 提供稳定的镜像托管服务,无需自建 Harbor,推荐中小团队使用。

构建流程

Maven Docker 构建流程图

流程说明

步骤说明
Maven Build编译 Java 代码,打包为 JAR 文件
fabric8 插件调用 Docker Remote API 构建镜像
Docker Daemon根据 Dockerfile 构建镜像
docker push推送镜像到阿里云 ACR
docker pull生产服务器拉取镜像部署

一、ACR 版本对比

对比项个人版企业版
价格免费按量付费
镜像仓库数100 个无限制
镜像加速不保障保障 SLA
多地域同步不支持支持
适用场景个人开发、测试生产环境
版本选择

个人版满足中小团队需求,企业版适合对稳定性和性能有更高要求的生产环境。

二、创建 ACR 个人版实例

2.1 开通容器镜像服务

  1. 登录 阿里云控制台
  2. 搜索「容器镜像服务」或访问 ACR 控制台
  3. 点击「免费试用」开通个人版实例

2.2 设置 Registry 登录密码

密码保管

此密码用于 docker login 登录镜像仓库,请妥善保管,不要泄露到版本控制系统中。

  1. 进入 ACR 控制台
  2. 点击「访问凭证」
  3. 设置密码并确认

2.3 创建命名空间

  1. 在左侧导航栏选择「实例列表」→ 点击个人版实例
  2. 选择「仓库管理」→「命名空间」
  3. 点击「创建命名空间」,输入名称(如:pigx
  4. 设置「默认仓库类型」为「私有」

三、本地环境配置

3.1 安装 Docker

# 使用一键安装脚本
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
安装验证

执行 docker --version 确认 Docker 已成功安装。

3.2 开启 Docker Remote API(可选)

如果 Maven 构建机器与 Docker 不在同一台机器,需要开启 Remote API 以支持远程构建。

安全提示

生产环境请使用 TLS 加密的 Remote API,避免暴露未加密的 2375 端口到公网。

# 编辑 Docker 服务配置
vim /usr/lib/systemd/system/docker.service

# 修改 ExecStart 行,添加 TCP 监听
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

# 重载配置并重启服务
systemctl daemon-reload
systemctl restart docker

四、配置 Maven 构建参数

4.1 修改 pom.xml

编辑项目根目录 pom.xml,修改 Docker 相关配置:

<properties>
  <!-- 阿里云 ACR 地址(根据地域修改) -->
  <docker.registry>registry.cn-hangzhou.aliyuncs.com</docker.registry>
  <!-- Docker 主机 Remote API 地址(本机构建使用 127.0.0.1) -->
  <docker.host>http://127.0.0.1:2375</docker.host>
  <!-- ACR 命名空间 -->
  <docker.namespace>pigx</docker.namespace>
  <!-- ACR 访问凭证 - 用户名 -->
  <docker.username>your-username</docker.username>
  <!-- ACR 访问凭证 - 密码 -->
  <docker.password>your-password</docker.password>
</properties>
配置说明

docker.host 配置为本机时使用 127.0.0.1:2375,远程构建时替换为远程 Docker 主机 IP。

4.2 阿里云 ACR 地域列表

地域Registry 地址
华东1(杭州)registry.cn-hangzhou.aliyuncs.com
华东2(上海)registry.cn-shanghai.aliyuncs.com
华北1(青岛)registry.cn-qingdao.aliyuncs.com
华北2(北京)registry.cn-beijing.aliyuncs.com
华南1(深圳)registry.cn-shenzhen.aliyuncs.com
中国香港registry.cn-hongkong.aliyuncs.com
地域选择

建议选择距离生产服务器最近的地域,以提升镜像拉取速度。

五、构建并推送镜像

5.1 构建单个模块

# 进入模块目录
cd pigx-upms/pigx-upms-biz/

# 构建 Docker 镜像
mvn docker:build

# 推送镜像到 ACR
mvn docker:push

5.2 使用 IDEA Maven 面板执行

IDEA Maven 面板操作界面

在 IDEA 右侧 Maven 面板中,展开对应模块的 Plugins → docker,双击 docker:builddocker:push 执行。

5.3 跳过指定模块构建

在实际部署中,可能不需要构建所有模块的镜像。可以通过修改模块 pom.xml 跳过构建。

<plugin>
  <groupId>io.fabric8</groupId>
  <artifactId>docker-maven-plugin</artifactId>
  <configuration>
    <skip>true</skip>  <!-- 跳过此模块的 Docker 构建 -->
  </configuration>
</plugin>

PIGX 各模块 Docker 构建配置

模块路径默认构建
pigx-registerpigx-register
pigx-gatewaypigx-gateway
pigx-authpigx-auth
pigx-upms-bizpigx-upms/pigx-upms-biz
pigx-codegenpigx-visual/pigx-codegen
pigx-monitorpigx-visual/pigx-monitor
pigx-quartzpigx-visual/pigx-daemon-quartz
pigx-xxl-jobpigx-visual/pigx-xxl-job-admin
pigx-flow-bizpigx-flow/pigx-flow-biz
pigx-knowledgepigx-knowledge
构建建议

生产环境只构建必需的核心模块(gateway、auth、upms),可视化模块和任务调度模块按需构建。

六、拉取镜像部署

6.1 在目标服务器登录 ACR

# 使用阿里云账号登录 ACR
docker login --username=<阿里云账号> registry.cn-hangzhou.aliyuncs.com

执行后输入在步骤 2.2 中设置的 Registry 密码。

6.2 拉取镜像

# 拉取指定版本镜像
docker pull registry.cn-hangzhou.aliyuncs.com/pigx/pigx-gateway:5.11.0

# 拉取最新版本
docker pull registry.cn-hangzhou.aliyuncs.com/pigx/pigx-gateway:latest

6.3 修改 docker-compose.yml 镜像地址

services:
  pigx-gateway:
    image: registry.cn-hangzhou.aliyuncs.com/pigx/pigx-gateway:5.11.0
    container_name: pigx-gateway
    restart: always
    ports:
      - "9999:9999"
    networks:
      - pigx-network
部署完成

配置完成后,执行 docker-compose up -d 启动服务,通过 docker ps 查看容器运行状态。